{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Code adapted from [chapter 7](http://www.d2l.ai/chapter_optimization/) of Dive into Deep Learning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "def show_trace_2d(f, res , color = 'red'):\n",
    "    \"\"\"Show the trace of 2d variables during optimization.\"\"\"\n",
    "    x1, x2 = zip(*res)\n",
    "    plt.plot(x1, x2, '-o', color=color)\n",
    "    x1 = np.arange(-5.5, 2.5, 0.1)\n",
    "    x2 = np.arange(min(-3.0, min(x2) - 1), max(1.0, max(x2) + 1), 0.1)\n",
    "    x1, x2 = np.meshgrid(x1, x2)\n",
    "    plt.contour(x1, x2, f(x1, x2), colors='blue')\n",
    "    plt.xlabel('x1')\n",
    "    plt.ylabel('x2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def train_2d(trainer):\n",
    "    \"\"\"Optimize the objective function of 2d variables with a customized trainer.\"\"\"\n",
    "    \"\"\"trainer(x1,x2,s_x1,s_x2) should return the updated positions x1, x2 and possible memory terms.\"\"\"\n",
    "    x1, x2 = -5, -2\n",
    "    s_x1, s_x2 = 0, 0\n",
    "    res = [(x1, x2)]\n",
    "    for i in range(20):\n",
    "        x1, x2, s_x1, s_x2 = trainer(x1, x2, s_x1, s_x2)\n",
    "        res.append((x1, x2))\n",
    "    print('epoch %d, x1 %f, x2 %f' % (i+1, x1, x2))\n",
    "    return res"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gradient descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eta = 0.4\n",
    "\n",
    "def f_2d(x1, x2):\n",
    "    return 0.1 * x1 ** 2 + 2 * x2 ** 2\n",
    "\n",
    "def gd_2d(x1, x2, s1, s2):\n",
    "    return (x1 - eta * 0.2 * x1, x2 - eta * 4 * x2, 0, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.943467, x2 -0.000073\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(gd_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.387814, x2 -1673.365109\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.6\n",
    "show_trace_2d(f_2d, train_2d(gd_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Momemtum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eta, gamma = 0.4, 0.5\n",
    "\n",
    "def momentum_2d(x1, x2, v1, v2):\n",
    "    v1 = # your code\n",
    "    v2 = # your code\n",
    "    return x1 - v1, x2 - v2, v1, v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.062843, x2 0.001202\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 0.007188, x2 0.002553\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.6\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.589111, x2 0.698505\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta, gamma = 0.05, 0.9\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Nesterov accelerated gradient"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eta, gamma = 0.05, 0.9\n",
    "\n",
    "def Nesterov_2d(x1, x2, v1, v2):\n",
    "    v1 = # your code\n",
    "    v2 = # your code\n",
    "    return x1 - v1, x2 - v2, v1, v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.751356, x2 0.071637\n",
      "epoch 20, x1 -0.589111, x2 0.698505\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEKCAYAAAASByJ7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnXl8VNX5/z9nZrLvIZBAyMK+L0JQ2dxwQb/u1VobLaWttLXWql1UcLf407q22tpiXUustSq1uNQFsWIVFZBFBCFAEsIWEsg6SSaTOb8/nhzumZuZZEJm5s4kz/v1Oq87986de88kc89zluf5PEJKCYZhGIaxWV0BhmEYJjJgg8AwDMMAYIPAMAzDdMAGgWEYhgHABoFhGIbpgA0CwzAMA4ANAsMwDNMBGwSGYRgGABsEhmEYpgOH1RXoCVlZWbKwsNDqajC9wOMB2tuNYt73d1zt69vuGDcOSEwM/XdiGKtobQW++qrrc5KTgcbG9dVSyoHdXS+qDEJhYSHWrVtndTX6Le3tQF0dUFtL5ehR47V+XO2rY3V1QH09bdvbu79PbCyQmgqkpdE2JcUoycmdt8nJQFJS5/28PCAuLvR/F4axirY2oKICaGoCGhupNDR47+fkAAsWiPJArhdVBoHpPVICTidw5AhQU0NbVY4e7fz66FGj1Nd3fW0hqBFPSwPS02mbn28cUw28/lo1+HrjHxsbnr8Fw0Q7MTHAiBHdn7dgQWDXY4MQxUhJjfThw1Sqq6nU1BhbvSgj4HL5v2ZcHJCRYZTcXGDSJGrg9eNqPy3N2E9OBmy8KsUwUQsbhAijqQk4dAioqvIuhw93fl1dTUNGX8TEAAMGGGX0aON1ZqZR9P2MDCAhgXr6DMP0P9gghBgpaU7v0CHg4EHvrV6qqmjrdPq+TkoKMGgQMHAgTcNMn06v9ZKVZZTkZG7YGYbpGWwQjhO3mxrxAweoHDxobM3FVyNvs1Ejnp1NZeRI4/WgQVTU64EDgfj48H9HhmH6F2wQTHg8NBWzbx9QWQns32+UAweMbVWVb9fHzExa1R88GJg5k15nZ9NWvc7Opl683R7+78cwDOOPfmUQPB5qyPfupcZebfWyb1/nRVchqKc+ZAg19NOn09ZcsrPZzZFhmOilzxgEKcnPvaLCKHv3Gtu9e6mxNy/CxsUBQ4dSmTWLvGqGDqWtKtnZtEjLMAzTl4kqg+ByAf/7H1BeTg29edvQ4H2+w0GNe14eMHs2bfPyjGN5eeRlw4uvTH9Ayq4jwH0V9Rl9q5dAEMK72Gzer/0Vu93YqqI+y4QGIQP9r0YAQhRJwIhUzswECgqo5OdTA19QQNv8fOrZ8zw9E2qkpJFnc7NRWlqMrbm0tvouLpexNZe2ts5bt5u26rXaV69VaW83tn0Bm406e12VmBhjq5fYWGOrl5gYmi2IjfXe6iU+3tiqkpDQeZuQQJ+PJMMlhFgvpSzq7ryoGiEUFAB//rPR6CcnW10jJlrweIxQfl8h/vpWFafT2Jpfq9LcTNtAtJW6wm73bqBUo6Q3YGqbkEBR3XqjZ97a7cbW4fDemnvc6rUQxjHVEzdvfZWuMI8oVPE1+lCjFSm71rlSxk29bmvzfm02kHppbOxsZJUhbmszDHJvjafNRv+nxEQq+uukJO/Xal+9VtIrSobFVwlVR9cygyCEyAPwAoAcAB4Ay6SUv+/qM1lZwPz54agdEwlIST1qpYukNJGULlJDg7GvijrW0OBd/MV3+EII4+HUH97ERHIu0I+pB131DFXx1XvUe5d6zzM2lhprJnJobzcMhRrV6SM88whQHxmqjoIqegeiqYn0vfbv79zx6EmnIiHBW+MrJcWQflGSMKoMHx74da38GboB/FJKuUEIkQJgvRDiPSnl1xbWiQkyra3eekhKEE8XxjOL4ulbf5HYOurh0IXwhgyhfSWC50sQTy967yw+PrKG+0z4sdsN4x4OVOdHGQl91Goe1aqtuRw4AOzYYXSIVCfo9NMDr4dlBkFKeQDAgY7XDUKIbQByAbBBiEDcbkMjSRVfAnlmsbzueuaJiaSDpMqgQcCoUd6CeOaiej5padTAswcYE+0IYRigrKzgXNPtJsPgdtNzFQgRMVAVQhQCOAHAZz7eWwRgEQDk5+eHtV59GZfLWx/JrJGkC+YdPky9dX/ExRmaSBkZpL5YVGTsm4sSxktPZ2VThgkVDgc9Zz36TGiqEjhCiGQArwK4QUrZSWBZSrkMwDIAKCoqih6XKAtoavLWSTp40NBI0jWTumrgY2Koh6L0kZRmktJIGjCA9pUw3oABnISGYfoKlhoEIUQMyBiUSClfs7IukUp7OzXggWgmNTb6vsaAAYYu0rRphlaS0lIaONDYT0vj+XOG6a9Y6WUkADwNYJuU8hGr6mEVUtI8u5LL0DWT9FJV5dsFLj2d5DJycoAZM7w1k5RekmrseY6dYZhAsHKEMBvA1QC2CCE2dhxbLKV8y8I6BQUpaUpGSWaoYtZPam7u/NmBAw1tpMmTaas0lJQByMkJn/cDwzD9Byu9jD4GEJWTE21t1KDruknmYp6+sdtJFykvj6ZtLrrIWzNJNfq8yMowjFVYvqgcibS0UKNeVkalvNzYlpfTFI9Z8WPQIJLLGDsWOOssQ0pDlZwcltFgGCay6ZcGwe2mqZtdu4A9e6ixV9uyMlq01bHbDZ2kM84w9JN0DSWewmEYJtrpswahtZUa+dJS77JrFzX6brdxrt1ODfuwYSSNMWwYUFhIpaCApnS4d88wTF8nqg2CywXs3g3s3EmltNTYVlR4a4OkplKayhNOAC6/nIKnRoygRn/oUNaSYRiGiapmsKoK+MUvSK9jxw7q6euNfkYGyR7MmgUsWEAGQBXOe8D0FaSkEa4viWxzCUQS21d+BD1Hgq5GalYsDQSzUqpZTdVf7gO9BCpzbZa31o/x8989UZcPISlpHUaPBkaPpsZfbUeNokafYcKJx2OoVSoxMrNEtq5+qb/uKmeCrqqp50pQr5meo0uLd5fnQM93oKvWmqWszbLWukhiYiIZuUigT+ZDmDwZ2LiRLT3TO9rbDQltXU5bl9D2J6OtK04qRcqeorTyfUllx8eTYN/Agd6Nla/kLeYEL/6K3pvuLj+C3lM3ZzDzl/WsK8z5D/R9c/GV+8CcB0HPf2BOEqSKOdeBOfGQOTGRnrSottYw2K2t3jLWx5MjITGxs8quP9lqXbraLOKYmhqeae2oMgg87GMAalAaGzvLauvy2qqY9+vq/Et86Ajh++HNy/N+uM0JTczJTsy9yoQEjhyPVsxZ8cx5DtTWnHDJLF9dU0PT3XpHI5CJmqQkMg66OrAqZtFIJSSpNMcCJaoMAtP3aGsjCQ8lqa0ktmtqvItZWrurPAk2Gz04GRnGAzR6tCGfnZ5u9LrMktqqJCVFznCfiQzUiCs1NbjXVdOO5mRPelIo9Vp1aurqSKzym2+o01NX538EM3t24HVhg8AEFacT+PprI9mHLq2ty2ur0pWsdkKCoaiamQlMmEBbJatt3qreUUoKN+ZM9GCzGSPOIUOO7xr+Rs1HjtBz8b//BXYdNghMt3g8JNXx1VfAtm3k6ltRQQF8NTXUO3E6aX7W39A3JsaQ1B44kGI9lMz2gAHe8tqqcLAfwwSGEMa0Zm/SxrBB6OfU1tJC/VdfkSuvkuZQOROcTu8gPjMOBy18qp77wIHUy5k7l5wAlKx2aiqv/zBMpMMGoQ9TXQ2sXw9s3kyN/Z49JKldU0Pzkq2tXffoExOpcR84kLSYCgoomG/sWJq+ycvjqRmG6UuwQYhS3G7q2a9fD2zdStHZlZU0R19fT3P4vhp7IahHn5ZG0zKDB9MQc9QoYPx46tUXFHBDzzD9ETYIEUx5OfDxx8CGDTR3X1ZmNPi+vGyEIP/01FSao8/NBYYPpx795Mkku52eHvavwTBMlMAGwULcbuDLL8kDYONG4H/1JdgzfAnakyuAunxg1VJgS/Gx84WghdbsbJrKUdM3U6dSUvvj9VBgGIYB2CCEHJcL+Pxz4JNPqPHfuZMWbY8epTn8Y0wqAS5YBMQ6aT+9HPaLF2H+/wHfO6EYs2aRCB/DMEyoYIMQBDwe8r1fvRpYt46md/bu9dHodxAXRx45ubkUMDVlCvCIZwkOtTq9zmu3O7Ep4xZ8+9vFXsdLtpRgyaolqKirQH5aPpbOW4riSd7nMAzD9BQ2CD3A4wE++wxYtYoa/u3byWunsbHzAm5cHAWEDB0KjBlD8/dz55L8ti9NklvurvB5z8r6Sgz//XDMyJ2BGUNmoLalFo98+gia3ZSQubyuHItWLgIANgoMw/QKNgg+8HhoIfe994C1a6nHv39/ZyEzIWgBd9w4mssvKqJG/8QTe5YbucXdglh7LFrbOw8n0uPTMW3wNKytXIuXt77s8/PONieWrFrCBoFhmF7R7w3Crl3AW28Ba9aQ+2ZlZWexKZuNGv5Jk8j/ftYs4MwzyRD0lnZPO6567Sq0trci1h4LV7uhbZwYk4gnznviWENf1VSFnIdyINHZn7SizvcIg2EYJlD6jUFwOqnhX7WKev+7d5POh57kQ4V/jx9PZfZsSqk5Zkxo6iSlxPVvX49Xt72KR85+BIOSB3W5NjAoaRDy0/JRXlfe6Vr5ab2IV2cYhkEfNQj19cCKFcA775BnT0UFGQSdhARKnzl2LDBzJjX806aFNyDrvjX34U/r/oRfz/o1bpx5I4Du1wGWzluKRSsXwdlmfCEBgdvm3hbSujIM0/eJeoNQXw/8+9/A229T1G5FBWmVK4SgYKwJE4CTTqKpnrPOIlkGK3l6w9O4bfVtuGryVbj/zPsD/pwyGGokMTBpIA43HcYr217B90/4Phy2qP+XMgxjEVGVQnP69CK5ePE6vPEG+faXlXn3/IUgz57Ro2me/6KLgDlzIk+GYeU3K3HxPy7GWcPPwsorVyLG3ruMKU+tfwqL3liE60+8Hr8/9/dBqiXDeOPxGFnLzNnOfGHOuKYyt0Xa89gf6JMpNDdsAC67zNhPTwcmTqS5/osvjszGH/COGxiUNAg1zhpMHzwdr3z7lV4bAwC4Zvo12Fa9DY+ufRTjBo7DT4p+EoRaM1bgdFLik+pqWuPSM72ZU3fq2btaWrxTRqr0kqqoNJQqVaWvtJaqb2hVH1Gp4eqpOvV0nSq1p15UilCVvEalF9VzIus5j1UWPD3zWGYmSa9nZ9P7/ZmoMgiJicD3vgdceCFN+4Qjx2hvKdlS4jXnf6jpEAQEfjD1B0iODd6v78GzHsQ3Nd/gureuw+gBo3HGsDOCdm2me+rracRaWUl5Ig4eNDK/HTli5GdubKRGXzXgquFWjXNv0RtQPS9yV7mU1b5+nt74qtfqmubGWt1XR32XrnIpm42Uypts3jfnVda35pFKMP+GakSjcloro6Ky6mVkkEDkwIEk8z5kCMUd5eeTkYlGomrKqKioSK5bt87qavSIwscKfXoFFaQVoOyGsqDeq761HrOenoV9Dfvw2Y8+w+gBo4N6/f5AdTXJi5SVkbjg/v1GxjfVsDc2GknYVQMWKKrBVQ2N6smqXMwqX7O+1ROtm9OAZmTQedHQOQonHk/n1JO1tXRMz62t/p/KWDc0GPmRW1ro/6wbbn9pKn2hjEpsrLcxUXmOc3LIiOTlkRjliBFkWEIxy9Enp4yiEX/xAaGIG0iNS8XKK1fixL+eiPNfPB+f/egzZCRkBP0+0UR1NcmKqHwQlZXUe1cNvOqxu1yBPex2Oz3g8fH0cCcnG71FlSRo0CB62NUDn5tLx7jRDh82mzElFGw8HuokVFZSh+HgQWNEqKb6jh41jE1TExmaI0e6Tjal1z0ujqa7UlLoOwwcSFL1ubnkHank6nNygvvd+CcaYsIdNzAsYxhWXLECZzx/Bi7/5+V4u/jtoKxTRBIuF2V4Uw29mqpRjXxDA/Xsunv4VC9dpR5MTzfmklVDnp9PEuKFhTy/zBA2m2Hwjwenkzone/aQV6SaZlRrR2oE43SSEGZ55+bDC5W1MCWFOiZq+qqw0NBKCxSeMgoxJVtK8MPXf+glS5EYk4hlFywLqdTEcxufw8LXF2Je4TzsPLoTe+v2RoUQnhIK1BP/VFTQw1JbSw29v568EMbwXA3N1cORn0/D8tGjKdAwWud4mf5JbS3wzTc0nbl7N4ln7ttHIxWVAbGpyXde85QUoKEhsCkjSw2CEOIZAOcDqJJSTuzu/Gg0CAAw7S/TsOnQJkgpw9ooX/DiBXhj5xtex8JhjLrC5QI2bQK++ALYsoV+4Hv3Us+oocF34h+APEiSk6khHzyYFu8KC4GRI2noPGECGQGG6e84ndSZUiPolBTg1lujwyCcAqARwAt91SAcbDyIoY8Mxa9m/apHAWjBoOCxAp9rFaFY0NbZs4eS/pgzvflr8G02mi/NyDByN48ZQy7FRUW02BaJ7sQMEy1ExaKylPIjIUShlXUINX/b9De0y3YsnLow7PfeW7fX5/HeLmh7PDSHr9J7bt9O0zo1NTSlY+5jCEHTOGqRdcQI6tVPm0bR4zx9wzCRAS8qhxApJZ7d+Cxm5c3CmKwQKeR1QW8XtF0uavRXr6Y5/R07yJvCLAMO0MJWaipN4wwbRlM406eDM70xTBQR8QZBCLEIwCIAyM+PLkXPz/d9jm3V2/DUBU9Zcn9fQngJjgQsnbfU6zy3m/I+vPsuSYKohl/XhAJo2iYtjbxuRo+mXM4zZ1KxWhuKYZjeE/EGQUq5DMAygNYQLK5Oj3jmy2eQ4EjAtyd825L7m4XwJCTmZJ+LQ+8V49I7aeFp377OPX67nVwwx4+nefxZs4BzzqG5fYZh+i4RbxCiFWebEy9tfQmXjb8MqXHhd39xOkn++5P3i5G9rhiNu4CaM67Ae20r8d4f9gENuceUYEeOBCZPJi2o+fPJRZNhmP6HpQZBCPF3AKcByBJCVAK4U0r5tJV1ChYrtq1AfWs9fnDCD0J+L4+HEv+sWAF88gllgWts9D4nPh7I++Z+7Bv3L0z99RI8e9FzmDiRvXcYhjGw2svoSivvH0qe2fgMhqUPwykFpwT92rt2ASUlZAS2bqXoXN2zJzWVFnRnzKD8D+eeq+b4h+Hm927A7z75Hdqyfg6bbXrQ68YwTPTCU0YhoKy2DB/s+QB3n3Y3bKJ3XXCXC1i5EnjtNeCzzyiIy2WkXUZ8PC3wnnQScMEFwPnn0zF/LJ67GM9sfAa/fPeXWL1gNYRZppJhmH4LG4QQ8PzG5yEgsGDKgh5/dv9+YPlyygC3ZQv59iuEICmGyZNpkffKK8mvvyekxafhntPuwbVvXYvXv3kdF4+9uMd1ZBimb8JaRkHGIz0Y8YcRGJk5Eu9d/V6359fXA089RSOATZu8PX7i48nFc+5c4PLLgdNPD86cv9vjxuQnJ6PN04at125FrD229xdlGCZiiYpI5b7Ih2Ufoqy2DEvPWOrzfY+HGv/nnwc+/dR7BJCSQp4+550HXH116AK6HDYHHj77YZz34nl48osn8YuTfxGaGzEME1WwQQgyz258Fmlxabhk7CXHjm3bBjzxBPCf/5Cuj0qoEhtL0z8XXgj8+MfhjeidP3I+zh5xNu7+7924esrVyExg/Yi+ip7CNRoUbxnrYKfDIFLXUodXv34V3x53JZ77awLmzqUsSePHA3/6E4m+5eYCCxdSZHBrK00T3XsvMPS/JaT7YLPRtqQkpHUVQuChsx5CXWsd7v3vvSG9F2MdKoVreV05JCTK68qxaOUilGwJ7e+LiU7YIASJxkbgqvv/gWZ3M5762UJcey3pANntwBlnAM89Ryn5KiqAZ54hr6BjlJQAixZRJgwpabtokW+jUBI8wzEpexJ+dMKP8MQXT2BHzY7jvg4Tudzy/i1e0iUABU0uWbXEohoxkQwbhF7Q2AjcdRcwaF4JUm4vxBv4MdDuwMCxO3HTTZTIor6e4gUWLKApIp8sWUKhxTpOJ/Cb33gf74nhCJB7Tr8H8Y543Pz+zcd9DcY6SraUoPCxQtjutqHwsUKUbCnB0eajePbLZzF/+XxU1lf6/FwoUrgy0Q97GfUQpxN49FFaFC4tBeTEEuCCRUCs0XD3OAmNzdZZM1pnwADKxP3NN50V5wASGSor69kX0bhvzX1Y8sESrF6wGqcVnnbc12HCi5oO0kcANmEDJOCBB8PSh6GmuQb1rfWdPhvqnBhMZBGolxGPEALA7QYef5yE3pKTgdtuo0xfw4YBaZcu8TIGQA+G5FICL79MAQa+GDAAuO8+8jnNzfVtDACah+oFN558I/JS83DTOzfBIz29uhYTPpasWtJpOsgjPUiOS8YX13yBXdfvwp/+709IjPGWok2MSeykeMswABuELtm8GZg3j+IBrr+eZCKGDgVuuQU4epQkJOqF78a42yF5ZSVw0UXAFVeQmpw5vDgxEfj974FbbwWefBJ44w3/cqMpKZSV+zhJiEnA/Wfejy8PfolBDw7ymn5gIhd/v7GG1gYUDSmCEALFk4qx7IJlKEgrgIBAQVqBpSlUmciGDYIJj4c8ggoKgClTgA8+oBwA114LHDhAnfH/9/9IJRTwn2zG67i+EFxQQG5G48cD778PPPwwDTf++ld6TwjaLlsGFJse2qVLOycesNtpoWLkSODPf6bhzPF8b+mBTdhQ01zD3ihRgJTSr4qu+TdZPKkYZTeUwXOnB2U3lLExYPzCBqGD6mpa+E1KAn72M2r4TziBYgdqaoA//pFSQJpZOm8p4uxxXse8huTmheCKCnI5KiigPJQ33UTpxoqLjSCFsrLOxgCgY8uWeRuO55+ndGYTJgA//SllrXn3XePeAXok3fbBbZ2mi9gbJTKRUmLxqsWoa62DXdi93uPpIKY39PtF5U8/BW68kTKFSUkzN9/6FvDII6QbFAjnLT8Pb+96GwKic+BPYSEZAzP5+b6PHy9Skv71r39N7k1Tp1Ky45YW45zERN8jDwC2u22Q6PxbEBDw3MnrCpGCR3pww39uwOOfP46fTP8JZufPxm0f3MZBZ0yXBLqo3G8NwgcfAD/4gdEm5+ZSW/rzn/dcL+jEp05EvCMeHy38qPOb/jyIhDBCloNJayutgP/mN77v68cjqfCxQp/5l9kbJXJo97TjmpXX4NmNz+Kmk2/CQ2c/xGq1TECwl5EfNm8muYh588gYzJhBSWUqK4Ff/KLnxqDJ1YQNBzZgbv5c3yf4Sz8WqrRkcXHAr37l/30/HklL5y3t5I3iK/8yYw1t7W0ofq0Yz258FneccgcbAyYk9BuDUFlJqqFTppCs9IQJwJdf0lTRzJnHf921lWvRLtsxJ3+O7xO+853OxxITaYE4lPTQEJm9UQDg1IJTefrBQvSgs7T70/CPrf/A7878He4+/W42BkxI6PMGobERuOwyagc//pjiu95/n9Zzp07t/fXXVKyBgMCsvFmd32xrA15/nRYj8vO79iAKNr48kgCqh66xraF7o/xg6g+wumy130hXJrSYNYia3c2IscVgSGoPE2AwTA/o0wbhT38CMjOBV18l19Hnn6cZk3nzgnePNRVrMCVnCtLi0zq/+cQTtLD79NM0P9WVB1GwMXsk5ecDl15KVvHEE0mCtQtuP/V2eKQHSz/iKSMr8BV01uZpY68vJqT0SYPgdNL00M9+Ruuqd99NrqPf+15w79PW3oa1lWt9rx8cOkRCR+eeC/zf/wX3xoGiu7KWl5NlfPdd8rEtKqLUbH4oTC/ENdOuwV+//Cv2HN0TvjozAPwHnbEGERNK+pxB+OADmqH5+GNg1ChqB++4IziZxsxsOLABzjanb4OweDFJTTz6qH9pCis480xaPJkxg7LwXHONX0mMJacsgcPmwD0f3RPmSjLZydk+j/sLhGSYYNBnDILHQ23bvHk0QrjxRmDHjp7nHO4JayrWAADmFpgMwuefk8b1DTcAY8aErgLHy5AhtJCyeDFFSI8ZQ363pgC2ISlDcG3RtXhh0wv4pvoba+vcj2h0NUJKeWxxX8FBZ0yo6RMGweUCxo6lti0tjYLNHnkk9Pf9uOJjjMwciZxkLYTZ4yHho5wcUsGLVBwOWnj+9a+BvXuB/ft9SmrfPOdmJDgScNd/77K2vv2I6966DlVNVVg8dzFrEDHhRUoZNWX69OnSTGurlMOHSwlIOWcO7YeDdk+7HPDAALnwXwu933juOarM88+HpyK9paCA6msuBQXHTrn1/VuluEvIzQc3W1bN/sLyTcsl7oK8/YPbra4K04cAsE4G0MZG9QjB7SZJ6t27KSvZmjVdJKEJMturt6OmucZ7/aC+Hrj5ZuDkk4GrrgpPRXqLP+ls7fivZv0KKXEpuPPDO8NUqf5J6ZFS/OTNn2BO/hzcceodVleH6YdErUFwu4FJk0go9JRTKCtZOFlTTusHc/LnGCJyaWnkXXTeeaFZxQ4FXUVMP/MMICUyEzLxy5m/xIrtK7B+//rw1a0f4Wp34cpXr0SMLQYll5bAYXNYXSWmHxIlrVZn5swhF/9Zs4DVq8N//zUVa5CdlI2Rb39mqJkq7r+/V2ktw4qvALaEBGDcOOCHP6SRTn09bjj5BmQmZOL21bdbU88+zpJVS7Bu/zo8feHT7EnEWEZUGoRXXwU++4zcStessaYzvqZiDeYWzIW47Tbf+ZCXREkAkS9J7aeeItGnpUuBf/wDmDYNqV/txM2zb8bbpW/jfxX/s7rWfYr/lP4HD336EH5a9FNcMu4Sq6vD9GOiziAo91IhgDfftMYYVNRVoKKugtYPApiDj3h85WKw28kt9cMPyY1r5kz87HOJ7KRsHiUEkYONB7HgXwswcdBEPHz2w1ZXh+nnRJ1BuPVWSl952WU0QrACtX4wN39u+NVMw82cOcDGjcC55yLppluweFsWVpetxgczswNKvMN0RhetG/b7YTjqPIqXvvUSEmISuvhQN8mOepAMiWH8EVUGQUqKL4iLA154wbp6fFzxMVLjUjE5ezJNq5iHKeFQMw0nmZnAv/4F/OEPWLR8G4bWAbdNqIL0EbfAdI1ZtK7F3QJhE9h4aGMXHzJl3TP/zbt7n2ECxFKDIISYL4T4RghRKoS4pbvz6+rIu+jqqzvnpA8nayrEdilnAAAgAElEQVTWYFbeLNhtdgqN9njIwyicaqbhRgjg5z9HfOYg3P4R8Gke8LYaoUXTmonF+BKtc7W7sOSFBf5794sX+16nuu464N57KeF3NK9jMRGDZb5tQgg7gD8COAtAJYAvhBD/llJ+7e8z9fW0Pf/8cNTQNzXOGmw9vBXfnfRdOrBiBW0//piCIvo6hw5hYRWw5HTg4isAtx3IrwOWripHHzOBIcGvaF1SOyBBvfuFC4Fnn6V1nN27/a9H1daSUJffm0XROhYTEVg5QjgRQKmUcreU0gXgJQAXdfUBJeN/zjkhr5tf/reXPGyOBaS98gppAU2YYF2lwkl+Pl6eANTHA20OQAqgPB1YdAFQ8jIvNnfCNLef78j0eVp+nbbT1ka+1EePAtOnA6mpvq+dl0fnFhT4fr+vrGMxYcNKg5ALYK+2X9lxzC+trUBSksXTReVrEGuPxYzcGcDhw+SFc/nlkaVoGkqWLsWSMwVcprGlMxZY8ulvgSuu4J6pwsfc/g/fraGRgEaiC1hqDqyUkkQSX3qJEnuYY0USE4H/9/8MTSpf7/eldSwmLFhpEHy1oJ2ywgshFgkh1gkh1klfSePDzJqKNZgxZAbiHfG00OrxkMtTf6G4GBVpvv8PFekAVq4kpcG77yZZ7b7q/dLV92puBt57r9PcfqsdeGkikN4C5NkzSLSu0Y5lK4HiLabr6717X7Ei+jpVd+8zTKAEIngUigJgJoB3tP1bAdza1WcSE6dLQMrm5qDqPgVMY2ujdNzjkLe8dwsdOPtsKUeOlNLjsaZCFlHwaIHEXehUCh4tkLK8XMpvf5sE8jIzpYyN9RbNS0yUcvlyq79C71i+nL6H/r3i46W8/HIpzzhDyrg4n4KBS86gv9Obo9D1tfrC34iJKBAF4nZfABglhBgmhIgF8B0A/+7qA0lJtH3nnZDXrRMlW0ow/A/D4fa48fSXT6Pkk7+QgNJll/Wf6aIOls5bisQY7ykKh81BWv35+RTd/OGHQEMDBbXp9AXvF19ePy0twD//San5rrsOePttmuPvYP1g4P45wIKNwHkubc6fe/dMBGGZQZBSugFcB+AdANsAvCyl3NrVZ9Ta2htvhLp23ijf8aqmKgDAYedhLHr/epSMb+9f00UdFE8qxrILlh3T6k+KSUK7px3TB083Tjr1VPIR9kUkrzH4mwo6fJgM3TXX+K+/EBTE99BDwPz5NMefmAiXHVh4MTCoCXj0vwmd5/Z9RYozjAUIGQHz8oEyfXqR3Lx5Hex28rgL1+Jy4WOFKK8r73S8oNGOst+19bsRgpmqpiqMenwUZuXNwlvffQtC/T0KC71F/3SmTSPhvCuvpGRCADW+S5ZQg5ufTw1nOBtHtQis9/4dDsomp75HWhqNenylHS0ooAbddM07//kz3HNCHf79/kBc8JNHucFnwo4QYr2Usqi786IqUlkI4KabyNvoe98L33279B3v58YAAAYlDcJdp96F/5T+B2/ufNN4w5+S6lVXGf/M3FzqTV97LfW+QxFt293CtpRAaSmlPDVPBbndwMGDwG9/C6xdC1RXk/hfgF49G+dNwH3Tm3DV5KtwwZoqNgZMZBPIQkOklOnTp8v2dikzMqQUQsodO4K36NIVfhdR788JTwWiAJfbJcc+MVaO/MNI2dLWYryxfDllXxOCtvpi6ddfS7l4sf+sbYCU+fm+b9jVdc3nmRdtExKkvO46KX/zG1oETk/3f3+A7nEc93e5XXLqn6fK7AezZY2zJpA/I8OEBAS4qBxVU0ZFRUVy3bp1WLECuPRSErfbvj30iqclW0rww9d/iNb21mPHEtsEln37byiezD0+xTul72B+yXzcP+9+3Dzn5sA/6PHQ1Iy/3+LUqcCwYcDw4bQtLwcef5wWchUJCSTjMHcuzScePUrl1ltp3xcxMcCUKRT8VVREUb8HDnQ+z9dUUADc+997cceHd2DFFStw8diLe/x5hgkWgU4ZWd7r70nRcyqfdBJ13mbOlLK9PShGtEu+88/vSNwFKe4SsuBGyOW/mR/6m0YhF7x4gUy+L1nur9/fsw/6GyWkpEh53nlSjhtHrp1d9eR7UoTonIA7iC6gmw5ukjH3xMjvvPKdHn+WYYINguF2KoRIFUKM8HF88vHbquDw8ccU//Tpp8Dpp4f+fg67A7kpufCMWo6yR4Hii1imwRePnPMIXO0u3LKqW61Cb/xF2z75JCW++Pprmt/fv7/rdZuVK+nHsXUrnau5fnqRn985AXeQXEDb2tuw8PWFSI9Px+PnPt6jzzKMpfizFAC+DWA/gI0AtgKYob23IRBrE+yijxCklLKtTcpRo6gjd/rpQTOmPpny5BQ5f/l8KS+5RMohQ8IzLIlSbnnvFom7INfuXduzDwa6LuBvNFFQ4PuaYQr8Wr55udd60/VvXR/0ezDM8YAARwhdGYSNAAZ3vD4RwHYAl3bsfxnIxYNdzAZBSjIKI0bQN5kzp/MsQDBwuV0y9i6H/M2lKcY0BkeS+qW+pV4OfmiwnLFshmz3hMBw9rSRD9TQ9KZKm5fLxKWJXk4HiUsT5fLN/DthrCdQg9DVlJFdSnmgYxTxOYDTASwRQlwPH5pDVuFw0GzCqFE0UzBoEOVbDiY7X3gULrgxqbSBDjQ0cAKSLkiJS8EDZz6AL/Z/gRc2hSCTUU+ndsIQ+OUrz4GzzYklq6I8KpvpV3RlEBr09YMO43AaSKI6orSeY2PJ2+hHP6IkOjNnAjfeGLzrb37hQQDApEPawb4gwRBCiicX4+ShJ+OW929BfWt9CG4QWdG9fmNV/BxnmEikK4PwUwA2IcR4dUBK2QBgPoAfhbpiPcVmo3ihVatoLfKxx2jUsH9/76+9xV4NuwcYW216I5IlGCzGJmz4w/w/4FDTIfz2o99aXZ2Qk5WY5fN4fhrnJGCiB78GQUq5SUq5E8DLQoibBZEA4BEA14athj3kjDOAqipyRy8tpdmEu++mjuTxsqUgAWOqgbh20xucgKRLZuTOwMKpC/HY2sewo2aH1dUJGeW15Wh0NUKYFN0TYxJJ8I9hooRAQrpOApAH4BOQQul+ALNDWanekpgIfPQR5RURArjrLmDAAOCF45zO3jI8GZMPm/5UnIAkIO6bdx/iHfG48Z0gzuFFEG3tbbjy1SvhsDnw0NkPHRP8K0grwLILlqF4EgcuMtFDIAahDUAzgAQA8QD2SCl70d8OHz/9KXDkCAmS1tUBCxZQp/699wK/Rn1rPcrchzEpIZ/mpViiuEfkJOfgzlPvxFs738KgBwfBdrcNhY8VomRL31iQv3317fi08lM8dcFTuGnmTSi7oQyeOz0ou6GMjQETdQRiEL4AGYQZAOYAuFII8UpIaxVEkpNJpr6igqaR9u4Fzj4bGD8e2LCh+89/VfUVAGDSfg+JsEXIImY0kZWUBQGBw87DkJAoryvHopWLot4o/Kf0P3jgfw/gx9N/jCsmXmF1dRim1wRiEH4opbxDStkmpTwopbwIwOuhrliwGTqUppE2bQImTQK2bSMJmxkzKNrZH1sOUW7DSesqgJNPDlNt+xZ3rr4T0uSpHO0umfsb9uPqFVdj0qBJePScR62uDsMEhW4NgpRynY9jfwtNdULP5MnA5s3kjVRQAKxbB8yaRSrMjz3WefF5S9UWpNgTUVALNgjHSV9zyXR73Pjuq99Fc1szXr78ZSTEJFhdJYYJClGVDyGYnHEGzfx8/DFw0kkkcnnjjZSms7iYJPABMgiT2gdQ0pcTT7S0ztGKP9fLaHXJvPe/9+K/5f/Fk//3JMZmjbW6OgwTNPqtQVDMnm3kPVmwgI69+CIweDAw9QSJDZWbMakKwLhxlC2L6TG+cjDbhA13nnqnRTU6fj7Y8wHu/ehefH/q93H1lKutrg7DBJV+bxAUmZnAc88BTU3krlpQAGzavQ+N7bUYvq4G//PMPDZqYHqGOQfzwMSB8EgP3i59G57ocFgDABxqPITi14oxJmsMnjj3CaurwzBBhw2CCZuN3FXLyoA//pMWlE8+5MSz20/G4MHktnrzzf5zrjC+KZ5UfMwls+rXVXjwrAfxz6//ibs/vNvqqnVJyZYSFD5WSO6yvy9EdVM1Xr7sZSTFJlldNYYJOmwQuqAxqcPD6BBwxq0nY+JEoLIS+N3vgIwMSuB1xx1AY6PFFY1Cfjnzl1g4dSHu+ege/H3L362ujk9KtpRg0cpFKK8rh4REi7sFNpsNm6s2W101hgkJbBC6YEvVFgxtT0JGTAq+e+84bNlCmnb33Uc6SWVllLUxNRUYOZIiotk4BIYQAn8+/884peAULHx9IdZWrrW6Sp3wpWDqandFtbssw3QFG4Qu2HxoMyZV28m7yG4HAMTHU5reHTuA+nrgzjtppLBrF2kmpaYCI0YAN90E7Nlj8ReIcGLtsXj1268iNzUXF790ccS5ofY1d1mG6Q42CH5oa2/DtsPbMGlXg9/4g+RkGhWUllKKhLvuImOwZw/w6KNkKFJTgXnzgGefBVyusH6FqCArMQsrr1yJZnczLvz7hWh0Rc4QKzMh0+fxaHWXZZjuYIPghx01O9DmacPkAzKggLTkZBot7NxJ00p//jNJZXg8wAcfAD/4AY0u8vOBhQuDn8Qnmhk/cDxevuxlbKnaguLXii33PJJS4oGPH0BNcw1swvsRYQVTpi/DBsEPW6o6FpSrQJFrPSA+Hvjxj0kqo7GRMrpddx2NGPbtI/fWk08G4uIocnrJElqs7s+cM/IcPHbOY/j3N//Gre/falk9PNKDG9+5EbesugVXTrwSz1z0DCuYMv0Gh9UViFQ2H9oMhxQYmzoMGDiwV9caNw54/HF67fEAK1aQFPcnnwBbtlC57z4aZUyZApx7LnD11f0v3cJ1J16HbdXb8LtPfofallq8s+sdVNRVID8tH0vnLQ15Q9zqbsWCfy3AP7b+AzecdAMePudh2IQNC6YsCOl9GSZSEJR/OTooKiqS69Z1klYKCRe8eAH2fPYffFVzBbB8ecjuU18P/PWvwGuvARs3UmCcIj4eGDYMmDMHuOIK4PTTKU6iL9PW3oYT/nICth7e6nU8MSYxpL3z+tZ6XPqPS7Fqzyo8cOYD+PWsX5NcCcP0AYQQ66WURd2d18ebl+Nny4GNmLTPHXJBu9RU8kj6+GOaXjpwgOIcTjuNdJW2baPUoGeeCTgcQHY2cNZZwMMPByc9aKQRY49BXWtdp+OhVEc92HgQpz13Gj4s+xDPX/w8fjP7N2wMmH4JjxBMlGwpwa3v34q99XuR3gw8MfMeFF90e0jv2RVuN7ByJfDqq7QQXVHh7a0UF0cyGyedBFx4IXD++TSyiGZsd9s6yWUDgICA587eLziXbCnBklVLUFFXgcEpg+Fyu+B0O/HK5a/g3FHn9vr6DBNpBDpC4DUEDRWZqoKRahOARV/dDwwfbtlCosMBXHIJFcWuXUBJCXkvbd1Knk07dgB/6xAlV4FyM2bQyGL+fFqfiBby0/JRXlfe6XhSbNKxNYXjxfw/3t9Aw6y7T7ubjQHT7+ERgkbhY4U+G6KCtAKU3VAWsvv2Fo8HWL2a1iE++YTiIswR0/HxwJAhtMA9ezYtXE+eHJlrEuZGGwAcwgGP9MBus+P7U7+PW+fcimEZw3p87Wj9HzNMb4joNQQhxOVCiK1CCI8QottKhotojUy12Sj47Y9/BL78koLkmpuBf/2L3F1POolGCGVlwJtvAosXAyecQKOPjAzybLrqKuAvf6EpKasxq6MWpBXguUuew54b9uCaadfg+U3PY9Tjo7Dw9YXYWbMTgEmEzpSz+XDTYbzy9Sv42Zs/82kMgMj/HzNMOLBkhCCEGAfAA+AvAH7lKyubL0I+QliahXJ3TafjBY4BKFtSHbL7hpOdO8korFlD00379nUeTdhsZCgKCoCJEymj3Nlnk8dTJLCvfh8e/ORB/GX9X+Bqd+Hk3JOx4eAGtLhbjp0TZ4/DqQWnYn/j/mN5sZNiktAu273OU/AIgenLBDpCsHTKSAjxISLIIJScnoVFs2rgjDWOJbqAZZ8MQPHqvmEQfOF204L1O+8AX3xB6xEHDtAoQ8dmoxxBQ4eSuN+UKcDMmTQFlZjo+9qh5GDjQTz8ycN4+NOH/S5Czxs+D6cXno7TC09H0ZAivPz1y52mo0Lt0sowVtNnDIIQYhGARQCQn58/vbzc95A/KNhseGGixIJLabegDli6Cij+SnROttwPcLnIHfbDD4H16w1DocdKKBwOWszOyaGRxPjxwPTpZCyGDg1tPXvqlaR7GYUr6I1hrMRygyCEeB9Ajo+3lkgpX+8450NE0AgBhYXY0ViOMT8Hnl8BfG9Tx/GCApqAZwCQbfz6a5p2Wr8e+OYbWnuoqSEdJ/NPSgggIYGy0g0ZQgKA48cD06ZRmEembw25gOGFYobpGsvdTqWUZ4bq2iFj6VLseOCHAFoxSi0lJCYCS1nMTMdmo7WFiRN9v79nD3k7bdhAgXVlZUBVFXDoEGk2ff555+slJADp6TTCKCwERo8GJkwAiopoeqorb6il85b6nAZiETqG6Rkch6BTXIydB14Dml7D6BrQyGDpUqCYpxN6wrBhVHz92dxu8oRat440nHbuBPbuBQ4fJqOxbx+NOszExJCnVEYGMHgwkJdHWk+jRgHjxhXj9/OA337K00AM09hIDiNff03PV2pq4J+1ysvoEgCPAxgIoBbARinlOd19LhyRytcuuwgv7f43jpz1PvlyMmHF46FRxfr19KMuLQXKy8lY1NbSlFR7u+/PCkGGIzGRHoLMTGDQIJqmysujqaqRI4ExY4CsrPB+L4bpDbW19Fzs2kVl717qPFVV0VRtfT09Gy5X5ynblBSgoSGCI5WllCsArLDi3t2xo3o7TReNH291VfolNhtNFU2Y4P8cl4t6PypKe88emoo6fBg4coQejv37u4+pcDhI+iMxkR6ajAxgwADSixo8mBbD8/NptDN8eHRFezORi9MJ7N5NpbKSGvcDB2hKtbqaGv/6enLeaG2lUXVXOBzGGl1mJokz5+bS73bUKGDqVPIIDASeMjKxs2U/TmmIoclsJiKJjaUf+dSp3Z9bXQ1s304L32Vl9PAdPGgYj4YGGmIfOUIPaHfY7XT/uDgSH0xONoxJZiYZlIEDyajk5NDoJDeXXjv4aesTuN3G9Ob+/fR7OniQfmvV1fRbOnqUflsNDWQAWlqAtrbuG3fA+I0lJNBINiODflODB9NvSa2xjR9PI+Bgwj9Rjea2ZlTYGzEqZijNPzBRT1YWyYfPmRPY+dXVNCQvK6OpKjUsVwakro56bs3NdO6BAz3zSLbbqcTE0EMfH08PfmKiMVJJSSFjo16nplL8R2qq8To9nbYZGXSMjY03Hg/1tOvqqOiv6+qoB15fb3QI9K3TSaW5mRpy1Ut3u/1PV/rCZjNGoSkp1HlQU5kDBlAnYfBgGoUOH05TmllZ1srJRNXPaNs24Cc/IVXPs88O/kOw6+guAMDo9JHBvTATNWRlUelhkjzU19MUlRqBqFFIdTX1FvXGR/UYW1vptdtNDVgwlvOEoAZFbe12Y6teOxzGvt3eeV8vNpv3ddS19fuo++qo7yKl8d3Ua1Xa242tv6L+Nqox1ot+Hf0+wfobOhxkuOPiyPgmJBiNemoqGeWBA+n3okaE+flU0tN7Xw8riCqD4HSS3s5f/kL76ek0RzZ7NnDRRcApp/TOuu7YQwvWo/IDmItgGI3U1K5dcQPF6aS55JoaMiSqmHuzqgerSksLra3oRTWibW3ejasq5sZab8StQDcuelGGSDdOMTHUYKsSG2uMutR0i3n0lZxsTPGlpFBPPT3dmHvPzuZ1oqgyCNOmAbfdRvkBPv+cFhO/+ILKY4/Rjycjg4zErFk0kuiJkdi5cy0AYNS4AOcXGCbIJCYabruRhjIkeq9dHdfPUc+b2jocRo9bNepMZBJVBkGIzrkBGhuB118H3n6bfNsrKkiX57PPgEcfpc+kp9P83Ikn0lTTWWf51t7Zsf8rZDcCqZMiRoCVYSIG1ZjzekXfpU/mQ6ivJ+nnd96haNmKChpi68TH04LO2LEkn3DuucAvX88FDh7ER8vauBvDMEyfwXIto1DQm8A0p5NGEatWkZHYvZu8RnSvgcxfxmFuaQp27qzG+PFGIpkxY4L0BRiGYSyADUKA7NpFhmL1J/V4bUwavvPBCfjHmg1eC2tCkJdBXh4FTJ18Mk09jRsX1KowDMOEBDYIPWTDzo8w/cVT8aqjGBffuhwbNwLvvgusXUvurvv3d04kIwR5lwwZQlNP06cDc+eSwYiN9X0fhmGYcGO52mm0sWPrRwCAUSNmwGYjj6Zp07zP8XjIo+n992kBe/t2Clzavp2MxgpNjCM2llzZcnNpymnaNAqOmj6dF+UYholMuGnqYGfZBgDAyCln+D3HZqOAJXPQksoP8OGHZCi+/po0So4coQCl9euBF180zo+LI/fY3FwKQZ88mUYVJ59Mi90MwzBWwAahgx013yCvCUgY1fOFga7yA7hcNKr45BOSfd6xg0YVR48axuLvfzfOdzhovSI7mzRLxo+nnAAzZ1IEJMMwTKhgg9DBzpb9GN2aFPT5nNhY8laaPbvze243sHEjpanctImMxd69FKW6bRuNNN56yzhfZR7LyDAyj40dSyJvM2bQMYZhmOOFDUIHO2LqcUVMeMNDHQ7q/Rf5WeopLzcyj23dSvuHDhlKi1980fkz8fEUlp+VZUjgjh1L8rfTp0evxgrDMKGn33sZlTx5LW7ZvQyVye3IaAEez/8pin/6p6DeIxSo0YUyFjt3GjkB6upI28bXv1YIw2gMGGCoLY4cSdNTU6dSojiOy2OYvgO7nQZAyZPXYtG+J+GMMY4ltgHLcqPDKHRHdTWtW2zeTPkA9uwh99nqahJI82c0ABq9JCbSesbAgaTkWFBA01RjxlA8BhsOhokO2CAEQOGvHShP7ixwXtBoR9mDAWSy6APU1pLB+OorMhrl5TTSUJmbnE5Sy/SHw2GMODIyKGGHynlcWEgjj9GjaZ+NB8NYA8chBEBFku9sF/6O90XS00kR9pRT/J/j8dDIYssWWuzes4f0odRoo77ecLH9+mv/17HZDGnilBQafWRlkRHJzjZSVhYWGslCGIYJH/3aIOQ32X2OEPKb7BbUJnKx2aixHjqUtJ26wun0TlmpDEdVlXfGsQMHyKOquwGqMiLx8UYWMZUpbOBAKkOGUMnLo5Kby8F/TP9CddrUCH/fPuqgHTpEna1A6dePzdLhi3yuISwdvsi6SkU5iYm+o7z90dIClJaS2KD6MR84QAakpoYMSEMDGZGepKwUwkikEhdnJEpJTjZSUKo8yMqwqOmuwYM5BzITPlSOZtVxOnCAnENU2tajR2n6ViVJamqi50blaVYZ4/yRkhJ4Xfr1T774p38CngS+d/BJeARQ0GTH0uGL+sSCcrQQH9/zTGMeDz045eU0ylDJzg8fNjKN1dbSg9PYSA/OkSP0mZ7kxAW8M3TFxpJx0TNxJSVRUYZG5TxWoxiV+1jPzJWYyOsp0YbHQ6PfI0fot6WK+q3puZrr6uh319RklOZmSpmqMtupHM09yccN0O9G/RZTUow83Oo3lpVlOIHk5tIU7LBh1MkJhKhaVB4/vkh+9dW6oD5MztrDSPr9ICy1nYXFt78bvAszEYvLRb2wykoaVldVUVH5j9WoRPXG9BzIbW1GasqePsxm9PSQ5hzHKp+vKuYUkXFxxla91t+LjzdGR2rKLTbWSPqurufrHna78VolxHE4vOsbaPYzc5Y1lbJTbxDV37StjYrLZbzWizlFqOoht7YaxeXy3qrXal+/jn5t9T/Vczfr9e0N6u+k/s56p0JNg+qNuhqtDhpkNOy5ub0TzOyTi8rbttGPNSGBLGFBAUlQFxUBp55KqTN7aiz2fP0JAGB49tgQ1JiJRGJj6bdTUND7a7nd1GtUo5PDh40cyObeotNp9BaVgVFFbxRdLjpHT0Sv5zxmeoc5V7NuiBMSjHzNytjGxxvTjklJnfMzqxGh6qErR4nMzOibdoyq6mZk0EO8b5+xKPnxx8BTT9H7QtA/SzcW06aRJPWYMb6Nxe5d5MY6rGBKGL8J01dwOIzeXLjweMhoKEPT2EjGprnZMDZOp3cvuaWFDI7eO1a9dL2o3rzqLStDpHrLunHyNUKSkp5DHZutcyOsH3M4fI+Q9KKPjpSrsz7yiY83HA/09aKEBNrGx/M0XSBElUEYPpzURBWNjcCaNcCnn5IvfWkpGYp9+2h++aOPvD+fkEDRuUOHkm/8lClA7cGtQBIwfNys8H4ZhjlObDajAWTXXCaYRJVBMJOcTG6Qvlwh6+tp9PD5597G4tAhmjteu5bOO2X+HiSfAAwePgYpKTR/N3QoBVRNmkTTUSecwLLUDMP0faJqUTlYkcotLTTS+PRT4I1tOTiUUIeWN5tx5AgNwX0Nhe12MkADBpDP+/DhNCU1ZQrlR8jM7HW1GIZhQgJLVwTIxJviMVJm4F+PHjh2rLaWlETXr6fI2927aRpKGQxfrotKmlrlMlCjDLWOMXkyp9VkGMYa+qSXUbCRHg/2JLTibOmdSCA9HTjrLCq+cDpJZfTLL8lglJaSwaiuJqNx4AApkZqx22mxKz2dFiHz8gx56gkTaIoqNTUEX5RhGCYA+rVBqCr/Gs5YYFhiz/IgJCZSfuQ5c3y/7/GQB9S6dSQat2MHLXIfPGho/uzdSyMQM0KQi1tSkiHPkJtrCMWNGUOjDZ6iYhgm2FhiEIQQDwK4AIALwC4AC6WUteGux+7tHTEIQ3oQJhsANpvh5/6tb/k+x+Mhkbgvv6R8Bnv2kJFQRqO+nvzZS0v93yc2loxTaiqtbQwaZAjEjRhB01Vjx9I5DMMw3WHJGoIQ4mwAH0gp3UKIBwBASnlzd58L5hpCyXtp+3UAABPySURBVJPX4obyP6M6QWJwkw0PDvtxREpWuFw0wti61RCMUxG2KgCqublriWohyI87IYGMh4qGzMkhA6LyHIwezTkOGKYvEtFrCFJKXSNiLYDLwnn/Y4lxEmj/QJIHi/Y9CTyJiDMKsbGBa/1UVdGaxo4dNOJQ01QqerahgfYrK7uOetVlqpOTyYAMGEBGZPBgYxSiRiJZWWxEGKYvYLmXkRBiJYB/SCmXd3dusEYInBiHgvq2bwd27SIvKl2mWun5KFVFFbHaFUqrJS6us6qoUhTNzjakqlXeg+TksHxdhunXWD5CEEK8DyDHx1tLpJSvd5yzBIAbQEkX11kEYBEA5OfnB6VunBiHGuKiIiqB0NJCxqO0lKat9u2jID89z4ESg6utpVFJoMqiSixNjUp00S9dI0atk+gy1bm5vEbCML5wOsnjsaUl8M+EzCBIKc/s6n0hxAIA5wOYJ7sYpkgplwFYBtAIIRh148Q4PSc+nlxjJ0zo2ecaG41EOSrXwaFDhrKo0nlXom9OJx0LZFSio+c/iIkxpB2UcVFCZEqeWs+HMGCAUbKz6RhPgTHhxOPpLJJ45Ih3PgQlr93Q4C2YqIQSlay2WYk3PT3weljlZTQfwM0ATpVSOsN9f06MEz6Sk3ue70CntpYMyd693jLVNTWdHxL1cLS00P7Ro72TqVZGRhdc0yWmdRljfWSj8iQkJxsjHWWQVNH3U1NZGiXScLmM35VSrFWS6KpBVkUJDKoOja5oq4pqsM1y20ow8HhQSq3qd5mSYvwO9c7P+PHAb38b2DWt8jIqBRAHoKbj0Fop5U+6+9yAAUXyF79Yh6lTgRNPJC+Z46XkyWuxZPcyVCS1I58T4/R5VFaqqirqfVVXdx6lmKWqnc7OmvoqQ5UqoXh8zMqgvqSazTkUfKmFmo/5OldN1+nX1BVJ1f3tdu96qddmZVMzShlVqaOq1+pvp16rhlG91v/Gvoqet0DfNx/XcxvoW38KrqH4X+p/Z3OnIj6eOhD6SFYfxeqS2nqehJ6qHvRJ6QohiiSwTtunP2hamhH5O2oUy0Uw4Udl01IxJMrAqOkw1ZtUEtV6D9JsdPSMWnpv0tzAqYZM72WqbX/Kn6AbJrPR0g2bL8Opch+ohlpPKqQabPP0o2q4VeOdkkINt3LpjsSseH3SIIwfTyOEr76ixc29e6m3V1dHD5Qv7HYj6jcnh7xbRo6kufBp0/znSWCYvoieE0EZHmV0XC6jB61Paaj1HJUvwWyEdDyezs+TeaRjzr6mGmXVk1Y5D9RxPRtctCWciRT6pEHozu20vJzkIrZsMYK4VABXUxP9oH3hcJDR0DWGhg+nKN+JE0ljiD1ZGIaJVvqlQegOt5t87zdsoHScO3eS90tVlZGU3Z/RUNNTyck02hg0iFweCwqMaSoWp2MYJhKxPA4hEnE4uvd48XhodLF5M8lF7Npl+NwfOUIeBjU1FA3sCyG8NYayssiVMTeXlE1HjKCRx9ixvL7BMExk0a8MQiDYbNTbHzeu6/NcLpKJ2LqVRhpKY6iqigxGQ4ORytMfStlUGY/MTCPoqqCADMioUbTOweqmDMOEGjYIx0lsLDB1KpWu8HhoHWPbNhp57NlDxuPQIVoQr60l75PKSjreFQ6HIY2dlmbIY+v6QiNG0PrHkCG8WM4wTM9ggxBibDZDv2fevO7Pr6qidQ6VQ2HvXoruVQJ1Klimurr7gBZdX0gFSOnaQjk5VC+leDpsGEfpMkx/hg1ChKECT045pftzPR4SpNuxw1ugTklD6LIQR47Q8UCiInVtIT3qVhkTFSSTk2PoCeXlkXFht0CGiV748Y1ibDbq3Q8dCpxxRmCfUZope/ZQ0fWF1ChECdU5nbQ9csS/95UvlKZQbKwRialrCekaQir6MjvbEKxjTy2GsQY2CP0Mm80IhZ8xo2efdblooXzvXtru30/rI0oCQslANDYaukLKoPRU5kGF/KsAJV03SBkYZWTS0ow1FWVo1FZ9V44jYfoSLS2G/EpNjVGOHKFnUOl8NTTQ6D1Q2CAwARMbS+sMw3qWgvoYanRSWUkjEjUqUTkY1OhE5WJwOg2JB6eTpr+UdMPxoGQNzNIFajSjC9bponVKsE6J1SljZBasUzIGaWn0mqfP+gdut7cQXkODMVWrhPB0CRMlgKf0ssxCeC4XKS+YhfB0/aee0JMRd1T9ZI8eJW8dlpuITvTRSW/xeOghUwvuKi9Dba23XLD+EOpSwbr6ZEuLt0ZQsGM1zfo6uoCcWXxO6eroRUk46FtVunpfv0ZsrLcR1O+p9s3Ceb626nsAxnfo7v+k6ywp2QuzoJ0vUTslJKgaRH1fSW2YNZ/0RtTXVpX2du/Pq+v7Es3TRfBCKYan/rbmDktysjH9qoquqaSPkFUZNMjwQExPp+sFVIdoilTWxe3sduq1paUZX7yw0IganjKld2qoTP/G4zEE6+rrjWG4L/ljJVan9/ZaW43enjI8autLmdNfg9OfROrCjRLEMwvh6ZpLZgVZfUTZlRR6UpKRglYfTSqJHL0kJ4e+g9snpStycork7NnrjgWAKbmJrhLMK0+ZtDTqmSrDMWIEjTQmTKBFWR5xMNGA291ZZ7+lhQxRW5sx1aD2Vc+4tdV/b7u73rC5AP4NlZSdJbF1NVKzrLYQ1NDqx80NsTqmi+DFxXmPiFSjrI4nJFADrRpq1Q7012m8PildMXQo8OqrnY8r98uNGyn4q7SUfPj376eFlvr67qOGHQ5Dq0iJ3A0eTAsyuuREXh4bD8Y6HA6jx8kwwSaqDII/dPfL88/3f57HQx4ySg21tJR895VOUV0djToOHaLgMH/Y7dTjUHrouuREXp4xdcWSEwzDRBN9wiAEis1GEbkFBV0bDoCG4Tt2kGHYvZtGF8o7RnnDqICvXbu6vpaSnFCaRenp3pHC+flkREaOpLr112EtwzDWwk2PH+LjKePa5Mndn6tHDJeWkibRvn3ko6+CvdRCpPLJ7wohjETxiYm0GJWRYQRy5eQY2kUFBaRdxMFcDMP0FjYIQaCnEcMeDwWU7NxJo4uyMnKfVEFeavqqqYmmsKqqApecUAtsym9e5WdV+kXKI2vIEJKcyM+nxXZeF2EYhg2CBdhshmbR7NmBfcbjIcOg1FKV6N3Bg0aEYn294XNfW0ujk0CDuJS3hzIo5qTf6ek0SsnKopFKdrahZTR0KIviMUxfgA1ClGCzUQOckwPMnNmzzzqdZECU+J3SLlIRwrp/vQreqqmhc3oSFaz7b+tyE7pAnorkVT7YmZneoxe1OM9SEwwTftgg9AMSE8njacyY4/u80jBS+kVVVTS1dfiwMb2lQvebmrxD8RsaDP/2nqJHbiojowKBlJ+5Li2RktJZ30gZn4wMYztgAJ3PIxomGtCDJFWApOrIqYh8JZmh1ip1aYyeSM2wQWC6pbcaRgq1dnLwoCHRrcS5lOdWfb2h+6Iif5ubDamJpiY6L1gyE3qEqr+oVD0yVQ+A0qUE9CjVxERDXkA/ptZ19EhWdSw2lg1UpODx0G/N6fSORNcbWaVHZI5S14sePKhHruuyKbrUhq/I9WD8vqurAz8/qgzCtm3ARRfRnPXw4eTrP2ECNVT8MEU++tpJMFHKj0eOUDl61HvkotZW1JSYWVDM/JCqaOCmJt9RuuFARfHqRZdV0A2ZrpFkPu6v+Dsf8I4i1u+nF72OXaFHNJvlOJSukf4a6CzhYd43S33ox8znm69jvqe5fuHArGmlOiHx8UYHxNzx0EfCSUm0rqeLKSoNIzUFO2gQfU7R3f/p2HnRJF2haxmZUeHsSuxJd88cNowMyLhxFHHMxoPpDR4PGQyztpHeo1S9x6Ymo3eoJCZ0NUtzb1H1FPUeo1lwzdyD9NXo+SqA/8Yv0poBX/IX5m1XxZcRNIv36eJ/ZvVbX3pFZoE55c2nj/Z0NVyV6jY11fopyj4pXTF9OvDPf1Ji+x07vBO81NQYD6hy6fSHzdY5ub1yx1S+/aNGAaNHB783y0Q/NpsxBdSf8TVi8ng6N3zcAYseosogAIHPZbvdZBT0YDEVaVxTQ9MJjY1kRPbs6fpaSqpCzfemp9PCpPKIUSkkhw+naOP09KB8VYaJaHw19Nz4RzdRZxACxeGgKaJx4wI7XyW337nTkKlQWvtq5KEWNLsSyVMoI6Lm/pS3i8pHPGQIFaV9NGyY95wfwzBMuOmzBqGn9CS5PUCji927KdK4vNxwyVSumMqIqLzElZWBzdMqQ6LLVqhFIyVdkZ1NxmToUDIoBQX0GYZhmN7ABuE4SU4OXOtI4XZTgNju3RQktm+fESSmvGP0aOPDh+n9QL1b9OT2amSiRidpaWRQ1FSXijTOzSXDkp7Ow32G6e+wQQgjDsfx+fMr//2KCiPBvZrO0hNrq4CU5mYyLNXVPfNl1hPb6wFgyntCzxesooxVInuVsi8nh7WRGCZascQgCCHuBXARAA+AKgDfl1Lut6Iu0YDuv1/UreNYZ9xuCgbbu5emtZRshTm5vZriUj76SlxPuTkeT719RRmr6TB9FKOS1CsxvowMQ5QvK8swPqmpbGwYJlRYNUJ4UEp5OwAIIa4HcAeAn1hUlz6Pw2GosfYGl8uIMj50iEYoKiBMD6PXE9urqE2Xyxi5BCPK2CxroSeTN0cU69HC6rXyE1fGSEleqKKCftRrXqNhgonbbci9qM6YitBXHpBqxK+eJfU8mSP49eBKPZ5FxaxkZwdeL0sMgpSyXttNAhBQ0xBpwTP9jdhYitPIzw/eNVtaDG0kNf2loox1jSRzlLF6GFRgl3ognE7jQQhFgnpz8JMe6GSWvtCLnv/XXOLivI2ZOqa/rwdJxcYaSZfU1td11bXM99eNp56zWL22Eo/H0L7SA/RcLqORU6/1xk/PJ60XFfSnfiN6MX/GHCSof9Z8L31rDiTUgwfV71APGAwm6reo//5iYqijozpGY8fSNHNA17MqUlkIsRTA9wDUAThdSnm4+88USSl9RyozjD90cbD6ehrJ1Ncboxm1kK/WX8zyFnovzNxI+Ioo9iWbEIrGIBIRou9/z64iovVOgWqc/UU+67IUur6VinTWo53T072nU5OTe2a8A41UDplBEEK8DyDHx1tLpJSva+fdCiBeSnmnn+ssArCoY3cMgG+CXNUsAD2Qf7KUaKkr1zP4REtduZ7BJxh1LZBSDuzuJMu1jIQQBQDelFJOtOj+6wKxnJFAtNSV6xl8oqWuXM/gE866WjJjKIQYpe1eCGC7FfVgGIZhDKzyMrpfCDEG5HZaDvYwYhiGsRyrvIy+ZcV9/bDM6gr0gGipK9cz+ERLXbmewSdsdbV8DYFhGIaJDDjmk2EYhgHABgEAIIS4SwixTwixsaOcZ3WdukII8SshhBRCZFldF38IIe4VQmzu+Hu+K4QYYnWdfCGEeFAIsb2jriuEEBGZzUIIcbkQYqsQwiOEiEjvGCHEfCHEN0KIUiHELVbXxxdCiGeEEFVCiK+srktXCCHyhBCrhRDbOv7vvwjHfdkgGDwqpZzaUd6yujL+EELkATgLQIXVdemGB6WUk6WUUwG8AZIniUTeAzBRSjkZwA4At1pcH398BeBSAB9ZXRFfCCHsAP4I4FwA4wFcKYQYb22tfPIcgPlWVyIA3AB+KaUcB+BkAD8Lx9+TDUL08SiA3yBAuQ+rOF55knAjpXxXSunu2F0LoJeKT6FBSrlNShnsoMxgciKAUinlbimlC8BLIAHLiEJK+RGAI1bXozuklAeklBs6XjcA2AYgN9T3ZYNgcF3HtMEzQogMqyvjCyHEhQD2SSk3WV2XQBBCLBVC7AVQjMgdIej8AMDbVlciSskFsFfbr0QYGrD+gBCiEMAJAD4L9b36TT6ErqQ0ADwJ4F5QL/ZeAA+DGoew0009FwM4O7w18k938iRSyiUAlnTIk1wHwKc8SagJREZFCLEENEwvCWfddAKVe4lQhI9jETkqjCaEEMkAXgVwg2nUHRL6jUGQUp4ZyHlCiKdAc96W4K+eQohJAIYB2CSEAGhqY4MQ4kQp5cEwVvEYgf5NAbwI4E1YZBC6q6cQYgGA8wHMkxb6Yffg7xmJVALI0/aHAuAcJ71ACBEDMgYlUsrXwnFPnjICIIQYrO1eAlrAiyiklFuklIOklIVSykLQAzjNKmPQHdEiTyKEmA/gZgAXSimdVtcnivkCwCghxDAhRCyA7wD4t8V1iloE9fqeBrBNSvlI2O7LgWmAEOJvAKaChrhlAH4spTxgaaW6QQhRBqBIShmRio1CiFdB6rTH5EmklAGqsocPIUQpgDgANR2H1kopI05KRQhxCYDHAQwEUAtgo5TyHGtr5U2Hu/ZjAOwAnpFSLrW4Sp0QQvwdwGkgBdFDAO6UUj5taaV8IISYA2ANgC2gZwgAFofaA5INAsMwDAOAp4wYhmGYDtggMAzDMADYIDAMwzAdsEFgGIZhALBBYBiGYTpgg8AwQUII8R8hRK0QwrLARobpDWwQGCZ4PAjgaqsrwTDHCxsEhukhQogZHUKI8UKIpA69+olSylUAGqyuH8McL/1Gy4hhgoWU8gshxL8B/BZAAoDlUsqIkzthmJ7CBoFhjo97QPo9LQCut7guDBMUeMqIYY6PTADJAFIAxFtcF4YJCmwQGOb4WAbgdlD+hAcsrgvDBAWeMmKYHiKE+B4At5TyxY5cwp8IIc4AcDeAsQCShRCVAH4opXzHyroyTE9gtVOGYRgGAE8ZMQzDMB2wQWAYhmEAsEFgGIZhOmCDwDAMwwBgg8AwDMN0wAaBYRiGAcAGgWEYhumADQLDMAwDAPj/0i5hn7r+ZZIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(Nesterov_2d))\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d), color= 'green')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Adagrad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import math\n",
    "\n",
    "def adagrad_2d(x1, x2, s1, s2):\n",
    "    # The first two terms are the independent variable gradients\n",
    "    g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6\n",
    "    #\n",
    "    # your code here (hint: use math.sqrt)\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -2.382563, x2 -0.158591\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.4\n",
    "show_trace_2d(f_2d, train_2d(adagrad_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.002295, x2 -0.000000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 2\n",
    "show_trace_2d(f_2d, train_2d(adagrad_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RMSProp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def rmsprop_2d(x1, x2, s1, s2):\n",
    "    g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.010599, x2 0.000000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta, gamma = 0.4, 0.9\n",
    "show_trace_2d(f_2d, train_2d(rmsprop_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def adam_2d(x1, x2, s1, s2 , t):\n",
    "    beta1, beta2, eps = 0.9, 0.99, 1e-6\n",
    "    g1, g2 = 0.2 * x1, 4 * x2\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def train_adam_2d(trainer):\n",
    "    \"\"\"Optimize the objective function of 2d variables with Adam-li trainer.\"\"\"\n",
    "    \"\"\"trainer(x1,x2,s_x1,s_x2) should return the updated positions x1, x2 and possible memory terms.\"\"\"\n",
    "    x1, x2 = -5, -2\n",
    "    s_x1, s_x2 = [0,0,0], [0,0,0]\n",
    "    res = [(x1, x2)]\n",
    "    for i in range(20):\n",
    "        x1, x2, s_x1, s_x2 = trainer(x1, x2, s_x1, s_x2, i)\n",
    "        res.append((x1, x2))\n",
    "    print('epoch %d, x1 %f, x2 %f' % (i+1, x1, x2))\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 0.414218, x2 0.086138\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.8\n",
    "show_trace_2d(f_2d, train_adam_2d(adam_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AMSGrad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def amsgrad_2d(x1, x2, s1, s2 , t):\n",
    "    beta1, beta2, eps = 0.9, 0.99, 1e-6\n",
    "    g1, g2 = 0.2 * x1, 4 * x2\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 0.868681, x2 -0.337192\n",
      "epoch 20, x1 -0.571139, x2 0.487553\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 1\n",
    "show_trace_2d(f_2d, train_adam_2d(amsgrad_2d))\n",
    "show_trace_2d(f_2d, train_adam_2d(adam_2d), color ='green')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:pytorch-image]",
   "language": "python",
   "name": "conda-env-pytorch-image-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
